$(function ready() {
    /**
     * 列表数据
     */
    $("#shopTable").bootstrapTable({
        url: "/shop/list",
        method: "get",
        pagination: true,   //是否显示分页（*）
        pageSize: 10,       //每页的记录行数（*）
        pageList: [10, 20, 50, 100, 'All'], //可供选择的每页的行数（*）
        sidePagination: "client",    //分页方式：client客户端分页，server服务端分页（*）
        pageNumber: 1,                    //初始化加载第一页，默认第一页
        classes: "table table-bordered table-striped table-condensed table-hover",
        uniqueId: "id",
        queryParams: function (params) {//默认参数设置
            return getParams(params);
        },
        rowStyle: function (row, index) {
            return getRowStyle(row, index);
        },
        onDblClickCell: function (field, value, row, $element) {
            return onDblClickCell(field, value, row, $element);
        },
        columns: [{
            title: "id",
            field: "id"
        }, {
            title: "店铺名称",
            field: "name",
        }, {
            title: "备注",
            field: "note",
        }, {
            title: "删除位",
            field: "isDelete",
            visible: false
        }, {
            field: 'operate',
            title: '操作',
            align: 'center',
            valign: 'middle',
            width: 200,
            events: {
                'click #update': function (e, value, row, index) {
                    updateOne(e, value, row, index);
                },
                'click #delete': function (e, value, row, index) {
                    deleteOne(e, value, row, index);
                }
            },
            formatter: function (value, row, index) {
                let result = "";
                result += '<button id="update" class="btn btn-info" data-toggle="modal" data-target="#updateModal">保存修改</button>';
                let deleteStr = !row.isDelete ? '删除' : '恢复';
                result += '<button id="delete" class="btn btn-danger" data-toggle="modal" data-target="#deleteModal" style="margin-left:10px;">' + deleteStr + '</button>';
                return result;
            }
        }]
    });

    /**
     * 设置样式
     */
    function getRowStyle(row, index) {
        if (row.isDelete != 0) {
            return {css: {"background-color": 'gray'}};
        }
        return {};
    }

    /**
     * 这里可以自定义处理查询参数，包括添加默认参数
     * @param params
     * @returns {*}
     */
    function getParams(params) {
        params = $.extend({}, params, {
            name: $("#searchName").val(),
            isDelete: $("#searchIsDelete").val()
        });
        return params;
    }

});



/**
 * 查询并更新店铺下拉框的选项
 * @param selector 要填充数据的元素
 */
function writeShopSelect($select) {
    /**
     * 动态获取仓库列表
     */
    $.get({
        url: "/shop/all", 
        dataType: "json", 
        success: function (result) {
            // 在这里处理返回的数据，填充到select中
            writeDropDownData($select, result.data);
        },
        error: function (xhr, status, error) {
            console.error("Error: " + status + ", " + error);
        }
    });
}


/**
 * 根据输入的供应商名称
 * 查询并更新供应商下拉框的选项
 * @param $name 检测输入改变的输入框，一般是name，同时需要填充id
 * @param $ul
 * @param name $name
 */
function writeShopUl($id, $name, $ul) {
    $.get({
        url: "/shop/list",
        dataType: "json",
        data: {
            name: $name.val(),
            isDelete: 0
        },
        success: function (result) {
            writeUlOnChange($id, $name, $ul, result.data);
        }, error: function (xhr, status, error) {
            console.error("Error: " + status + ", " + error);
        }
    });

}

/**
 * 按下Enter查询
 */
$(document).keyup(function (event) {
    if (event.keyCode == 13) {
        search();
    }
});

/**
 * 查询
 */
function search() {
    $("#shopTable").bootstrapTable('refresh')
}

/**
 * 查询按钮点击事件
 */
$("#search").click(search);


/**
 * 重置按钮
 */
$("#reset").click(function () {
    $("#searchName").val("");
    $("#searchIsDelete").val("0");
    $("#searchIsDelete").selectpicker("refresh");
})

/**
 * 新增按钮
 */
$("#addOne").click(function () {
    $.post({
        url: '/shop/addOne',
        async: false,//同步，默认是true，异步
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({
            name: $("#addName").val(),
            note: $("#addNote").val()
        }),
        dataType: 'json',
        success: function (result) {
            layerShow(result);
            search();
        }
    });
    $("#addModal").modal('hide');
})


/**
 * 表格内元素的点击事件
 * @param field
 * @param value
 * @param row
 * @param element
 */
function onDblClickCell(field, value, row, $element) {
    // 不处理的字段
    if (field == 'id') {
        return;
    }
    textToInput($("#shopTable"), field, row, $element);
}


/**
 * 修改当前行数据
 * @param e
 * @param value
 * @param row
 * @param index
 */
function updateOne(e, value, row, index) {
    $.post({
        url: '/shop/updateOne',
        async: false,//同步，默认是true，异步
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(row), // 将对象转换为JSON字符串
        dataType: 'json',
        success: function (result) {
            layerShow(result);
            search();
        }
    });
}

/**
 * 删除或恢复 当前行
 * @param e
 * @param value
 * @param row
 * @param index
 */
function deleteOne(e, value, row, index) {
    $.post({
        url: '/shop/deleteOne',
        async: false,//同步，默认是true，异步
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify({
            id: row.id,
            isDelete: row.isDelete == 0 ? 1 : 0
        }),
        dataType: 'json',
        success: function (result) {
            layerShow(result);
            search();
        }
    });
}


